package com.ruoyi.swla2.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 分区参数标签页对象 dw_tag
 *
 * @author gdqt
 * @date 2023-06-16
 */
public class ZoneTag extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 平台表单自增主键
     */
    private Long ID;

    /**
     * 设备归属租户
     */
    @Excel(name = "设备归属租户")
    private String tenantId;

    /**
     * 父级ID
     */
    @Excel(name = "父级ID")
    private String PID;

    /**
     * 大分区的ID
     */
    @Excel(name = "大分区的ID")
    private String AreaID;

    /**
     * 层级类型1:大分区、2：DMA、3：大用户、4：楼栋
     */
    @Excel(name = "层级类型1:大分区、2：DMA、3：大用户、4：楼栋")
    private String LevelType;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date ChangeTime;

    /**
     * 抄表频率（月/次）
     */
    @Excel(name = "抄表频率", readConverterExp = "月=/次")
    private Long ReadFrequent;

    /**
     * 抄表日期1-28（生成月数据日期）
     */
    @Excel(name = "抄表日期1-28", readConverterExp = "生=成月数据日期")
    private Long ReadDate;

    /**
     * 建设状态: 选项：0:规划、1:设计、2:完成
     */
    @Excel(name = "建设状态: 选项：0:规划、1:设计、2:完成")
    private String Status;

    /**
     * 该分区开始规划或建设的日期，格式：2022-1-1
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "该分区开始规划或建设的日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date StartDate;

    /**
     * 该分区建成的日期格式：2022-1-1
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "该分区建成的日期格式", width = 30, dateFormat = "yyyy-MM-dd")
    private Date FinishDate;

    /**
     * 该分区的负责人
     */
    @Excel(name = "该分区的负责人")
    private String Director;

    /**
     * 管网长度（KM）
     */
    @Excel(name = "管网长度", readConverterExp = "K=M")
    private BigDecimal pipeLength;

    /**
     * 用户支管数量（个）
     */
    @Excel(name = "用户支管数量", readConverterExp = "个=")
    private Long branchAmount;

    /**
     * 用户支管平均长度（米）
     */
    @Excel(name = "用户支管平均长度", readConverterExp = "米=")
    private BigDecimal branchLength;

    /**
     * 有无压力设备:1、有 0、无
     */
    @Excel(name = "有无压力设备:1、有 0、无")
    private String PressureEquipment;

    /**
     * 无压力设备时的平均压力值
     */
    @Excel(name = "无压力设备时的平均压力值")
    private BigDecimal Pressure;

    /**
     * 日平均供水时长（小时）
     */
    @Excel(name = "日平均供水时长", readConverterExp = "小=时")
    private BigDecimal SupplyTime;

    /**
     * 取值范围【1-4】，每隔5年增加0.5。大于等于15年的管网取值为2.5到3之间，（以上规则：南方地区增加0.5）—DMA独有
     */
    @Excel(name = "取值范围【1-4】，每隔5年增加0.5。大于等于15年的管网取值为2.5到3之间，", readConverterExp = "以=上规则：南方地区增加0.5")
    private BigDecimal ICF;

    /**
     * 居民，类居民户数—DMA独有
     */
    @Excel(name = "居民，类居民户数—DMA独有")
    private Long homeuserAmount;

    /**
     * 非居民户数—DMA独有
     */
    @Excel(name = "非居民户数—DMA独有")
    private Long otherAmount;

    /**
     * 居民，类居民用户夜间用水定额（L/户/hr）—DMA独有
     */
    @Excel(name = "居民，类居民用户夜间用水定额", readConverterExp = "L=/户/hr")
    private BigDecimal homeuserQuota;

    /**
     * 非居民夜间用水定额（L/户/hr）—DMA独有
     */
    @Excel(name = "非居民夜间用水定额", readConverterExp = "L=/户/hr")
    private BigDecimal otherQuota;

    /**
     * 抄表模式—DMA独有(默认：1：一户一表，2：抄总表)
     */
    @Excel(name = "抄表模式—DMA独有(默认：1：一户一表，2：抄总表)")
    private Long ReadMode;

    /**
     * 目标漏损率
     */
    @Excel(name = "目标漏损率")
    private BigDecimal LSL;

    /**
     * 目标产销差率
     */
    @Excel(name = "目标产销差率")
    private BigDecimal CXCL;

    /**
     * 干管长度（KM）—DMA独有
     */
    @Excel(name = "干管长度", readConverterExp = "K=M")
    private BigDecimal gpipeLength;

    public void setID(Long ID) {
        this.ID = ID;
    }

    public Long getID() {
        return ID;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setPID(String PID) {
        this.PID = PID;
    }

    public String getPID() {
        return PID;
    }

    public void setAreaID(String AreaID) {
        this.AreaID = AreaID;
    }

    public String getAreaID() {
        return AreaID;
    }

    public void setLevelType(String LevelType) {
        this.LevelType = LevelType;
    }

    public String getLevelType() {
        return LevelType;
    }

    public void setChangeTime(Date ChangeTime) {
        this.ChangeTime = ChangeTime;
    }

    public Date getChangeTime() {
        return ChangeTime;
    }

    public void setReadFrequent(Long ReadFrequent) {
        this.ReadFrequent = ReadFrequent;
    }

    public Long getReadFrequent() {
        return ReadFrequent;
    }

    public void setReadDate(Long ReadDate) {
        this.ReadDate = ReadDate;
    }

    public Long getReadDate() {
        return ReadDate;
    }

    public void setStatus(String Status) {
        this.Status = Status;
    }

    public String getStatus() {
        return Status;
    }

    public void setStartDate(Date StartDate) {
        this.StartDate = StartDate;
    }

    public Date getStartDate() {
        return StartDate;
    }

    public void setFinishDate(Date FinishDate) {
        this.FinishDate = FinishDate;
    }

    public Date getFinishDate() {
        return FinishDate;
    }

    public void setDirector(String Director) {
        this.Director = Director;
    }

    public String getDirector() {
        return Director;
    }

    public void setPipeLength(BigDecimal pipeLength) {
        this.pipeLength = pipeLength;
    }

    public BigDecimal getPipeLength() {
        return pipeLength;
    }

    public void setBranchAmount(Long branchAmount) {
        this.branchAmount = branchAmount;
    }

    public Long getBranchAmount() {
        return branchAmount;
    }

    public void setBranchLength(BigDecimal branchLength) {
        this.branchLength = branchLength;
    }

    public BigDecimal getBranchLength() {
        return branchLength;
    }

    public void setPressureEquipment(String PressureEquipment) {
        this.PressureEquipment = PressureEquipment;
    }

    public String getPressureEquipment() {
        return PressureEquipment;
    }

    public void setPressure(BigDecimal Pressure) {
        this.Pressure = Pressure;
    }

    public BigDecimal getPressure() {
        return Pressure;
    }

    public void setSupplyTime(BigDecimal SupplyTime) {
        this.SupplyTime = SupplyTime;
    }

    public BigDecimal getSupplyTime() {
        return SupplyTime;
    }

    public void setICF(BigDecimal ICF) {
        this.ICF = ICF;
    }

    public BigDecimal getICF() {
        return ICF;
    }

    public void setHomeuserAmount(Long homeuserAmount) {
        this.homeuserAmount = homeuserAmount;
    }

    public Long getHomeuserAmount() {
        return homeuserAmount;
    }

    public void setOtherAmount(Long otherAmount) {
        this.otherAmount = otherAmount;
    }

    public Long getOtherAmount() {
        return otherAmount;
    }

    public void setHomeuserQuota(BigDecimal homeuserQuota) {
        this.homeuserQuota = homeuserQuota;
    }

    public BigDecimal getHomeuserQuota() {
        return homeuserQuota;
    }

    public void setOtherQuota(BigDecimal otherQuota) {
        this.otherQuota = otherQuota;
    }

    public BigDecimal getOtherQuota() {
        return otherQuota;
    }

    public void setReadMode(Long ReadMode) {
        this.ReadMode = ReadMode;
    }

    public Long getReadMode() {
        return ReadMode;
    }

    public void setLSL(BigDecimal LSL) {
        this.LSL = LSL;
    }

    public BigDecimal getLSL() {
        return LSL;
    }

    public void setCXCL(BigDecimal CXCL) {
        this.CXCL = CXCL;
    }

    public BigDecimal getCXCL() {
        return CXCL;
    }

    public void setGpipeLength(BigDecimal gpipeLength) {
        this.gpipeLength = gpipeLength;
    }

    public BigDecimal getGpipeLength() {
        return gpipeLength;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("ID", getID())
                .append("tenantId", getTenantId())
                .append("PID", getPID())
                .append("AreaID", getAreaID())
                .append("LevelType", getLevelType())
                .append("ChangeTime", getChangeTime())
                .append("ReadFrequent", getReadFrequent())
                .append("ReadDate", getReadDate())
                .append("Status", getStatus())
                .append("StartDate", getStartDate())
                .append("FinishDate", getFinishDate())
                .append("Director", getDirector())
                .append("pipeLength", getPipeLength())
                .append("branchAmount", getBranchAmount())
                .append("branchLength", getBranchLength())
                .append("PressureEquipment", getPressureEquipment())
                .append("Pressure", getPressure())
                .append("SupplyTime", getSupplyTime())
                .append("ICF", getICF())
                .append("homeuserAmount", getHomeuserAmount())
                .append("otherAmount", getOtherAmount())
                .append("homeuserQuota", getHomeuserQuota())
                .append("otherQuota", getOtherQuota())
                .append("ReadMode", getReadMode())
                .append("LSL", getLSL())
                .append("CXCL", getCXCL())
                .append("gpipeLength", getGpipeLength())
                .toString();
    }
}
